package 牛客算法篇;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2024-03-13
 * Time:15:45
 */

import java.util.HashMap;

/**
 * 力扣面试经典:383. 赎金信
 * 简单
 * 相关标签
 * 相关企业
 * 给你两个字符串：ransomNote 和 magazine ，判断 ransomNote 能不能由 magazine 里面的字符构成。
 * 如果可以，返回 true ；否则返回 false 。
 * magazine 中的每个字符只能在 ransomNote 中使用一次。
 * 示例 1：
 * 输入：ransomNote = "a", magazine = "b"
 * 输出：false
 */
public class canConstruct {
    public static void main(String[] args) {
        System.out.println(canConstruct("a", "b"));
    }
    public static boolean canConstruct(String ransomNote, String magazine) {
        /**
         * 执行用时分布
         * 11ms
         * 击败25.15%使用 Java 的用户
         * 消耗内存分布
         * 44.26MB
         * 击败8.53%使用 Java 的用户
         */

        HashMap<Character,Integer> hashMap = new HashMap<>();
        for (int i = 0; i < magazine.length(); i++) {
            hashMap.put(magazine.charAt(i),hashMap.getOrDefault(magazine.charAt(i),0) + 1);
        }
        for (int i = 0; i < ransomNote.length(); i++) {
            if (hashMap.get(ransomNote.charAt(i)) != null && hashMap.get(ransomNote.charAt(i)) != 0){
                hashMap.put(ransomNote.charAt(i),hashMap.get(ransomNote.charAt(i)) - 1);
            }else {
                return false;
            }
        }
        return true;

    }
}
